package com.jeckey.demo;

import java.math.BigDecimal;

/**
 * 测试类：验证所有计算方法的正确性
 */
public class SupermarketTest {
    public static void main(String[] args) {
        Supermarket supermarket = new Supermarket();
        testScenario1(supermarket);
        testScenario2(supermarket);
        testScenarioC3(supermarket);
        testScenario4(supermarket);
    }

    /**
     * 测试场景1：顾客A（苹果+草莓，无促销）
     */
    private static void testScenario1(Supermarket supermarket) {
        StringBuilder result = new StringBuilder();
        // 用例1：0斤苹果 + 0斤草莓 → 0元
        result.append(supermarket.calculateTotal1(0, 0).compareTo(BigDecimal.ZERO) == 0 ?  " 场景1用例1成功" : " 场景1用例1失败");
        // 用例2：2斤苹果（2*8） + 3斤草莓（3*13） → 16+39=55元
        result.append(supermarket.calculateTotal1(2, 3).compareTo(new BigDecimal("55.0")) == 0 ?  " 场景1用例2成功" : " 场景1用例2失败");
        // 用例3：5斤苹果（40） + 0斤草莓 → 40元
        result.append(supermarket.calculateTotal1(5, 0).compareTo(new BigDecimal("40.0")) == 0 ?  " 场景1用例3成功" : " 场景1用例3失败");
        System.out.println(result.toString());
    }

    /**
     * 测试场景2：顾客B（三种水果，无促销）
     */
    private static void testScenario2(Supermarket supermarket) {
        StringBuilder result = new StringBuilder();
        // 用例1：1苹果（8）+2草莓（26）+3芒果（60） → 94元
        result.append(supermarket.calculateTotal2(1, 2, 3).compareTo(new BigDecimal("94.0")) == 0 ? " 场景2用例1成功" : "场景2用例1失败");
        // 用例2：0苹果+0草莓+5芒果（100） → 100元
        result.append(supermarket.calculateTotal2(0, 0, 5).compareTo(new BigDecimal("100.0")) == 0 ? " 场景2用例2成功" : "场景2用例2失败");
        System.out.println(result.toString());
    }

    /**
     * 测试场景3：顾客C（三种水果+草莓8折）
     */
    private static void testScenarioC3(Supermarket supermarket) {
        // 用例1：2苹果（16）+3草莓（3*13*0.8=31.2）+1芒果（20） → 67.2元
        String result = (supermarket.calculateTotal3(2, 3, 1).compareTo(new BigDecimal("67.2")) == 0 ? " 场景3用例1成功" : " 场景3用例1失败") +
                // 用例2：0苹果+5草莓（5*13*0.8=52）+0芒果 → 52元
                (supermarket.calculateTotal3(0, 5, 0).compareTo(new BigDecimal("52.0")) == 0 ? " 场景3用例2成功" : " 场景3用例2失败");
        System.out.println(result);
    }

    /**
     * 测试场景4：顾客D（三种水果+草莓8折+满100减10）
     */
    private static void testScenario4(Supermarket supermarket) {

        StringBuilder result = new StringBuilder();
        // 用例1：3苹果（24）+4草莓（4*13*0.8=41.6）+3芒果（60） → 125.6元 → 满100减10 → 115.6元
        result.append(supermarket.calculateTotal4(3, 4, 3).compareTo(new BigDecimal("115.6")) == 0 ? " 场景4用例1成功" : " 场景4用例1失败");
        // 用例2：5苹果（40）+6草莓（6*13*0.8=62.4）+8芒果（160） → 262.4元 → 满100减10 → 252.4元
        result.append(supermarket.calculateTotal4(5, 6, 8).compareTo(new BigDecimal("252.4")) == 0 ? " 场景4用例2成功"  : " 场景4用例2失败");
        // 用例3：0苹果+0草莓+0芒果 → 0元
        result.append(supermarket.calculateTotal4(0, 0, 0).compareTo(BigDecimal.ZERO) == 0 ? " 场景4用例3成功" : " 场景4用例3失败");
        // 用例4：6苹果（48）+8草莓（83.2）+5芒果（100） → 231.2 → 231.2-10=221.2
        result.append(supermarket.calculateTotal4(6, 8, 5).compareTo(new BigDecimal("221.2")) == 0 ? " 场景4用例4成功" : " 场景4用例4失败");
        System.out.println(result.toString());
    }
}